iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
自我挑戰組

Android Studio 初學者的30天筆記系列 第 22

DAY22:Service背景服務之簡介

  • 分享至 

  • xImage
  •  

今天,我們要來說到背景服務的部分,當我們在完全關閉APP的情況下,所有工作也會停止,那麼我們就需要用到Service來執行背景作業。
Service最大的特點就是在APP完全關閉的情況下保持啟動,且能夠在執行時使用其他程式,在執行任務的期間,與我們使用者無關,它是會獨立運行的,可以試想成當我們將Line或是Instagram這些通訊社交程式都滑掉關閉的時候,當有人傳訊息等等,我們手機還是會跳出通知讓我們看到,又或是說當我們在下載檔案時,我們也能繼續執行其他程式等待檔案的下載,這些都是Service使用的範例。
那接著,我們就先來創建一個新的Service吧!按照下圖路徑創建
https://ithelp.ithome.com.tw/upload/images/20211007/201404880t5MxIC3pA.png
點選後會呈現如下圖,名稱部分我就使用預設的了,接著按下Finish。
https://ithelp.ithome.com.tw/upload/images/20211007/20140488L3X90yCWre.png
完成後,系統會自動產生MyService的類別檔。
https://ithelp.ithome.com.tw/upload/images/20211007/20140488buHA9zUlYk.png
接著我們要來介紹啟動Service,第一次產生要使用onCreate()的方法,之後就會自動呼叫onStartCommand()方法,將要執行的任務寫在onStartCommand()中,要結束時呼叫stopSelf()使Service進行結束程序,之後皆會呼叫onDestroy()結束服務。
onStartCommand()扮演著接受外來請求並操作Service的角色,它的第一個參數intent可接受由Activity啟動時所含的資訊,第二個參數表示啟動的方法,第三個參數表示啟動識別碼。
返回值有三種定義:
START_NOT_STICKY:如果Service被結束時,便結束服務。
START_STICKY: 如果Service被結束時,回嘗試啟動並呼叫onStartCommand(),但Intent會被清空。
START_REDELIVER_INTENT:跟上一個一樣,但Intent會被保留並重新輸入。


上一篇
DAY21:AsyncTask類別之實作
下一篇
DAY23:Service背景服務之實作
系列文
Android Studio 初學者的30天筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言